package com.cardone.platform.authority.dto;

import java.util.Date;
import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.annotation.Transient;

import com.cardone.common.dto.PaginationEntityDto;
import com.cardone.common.dto.TreeEntityDto;
import com.cardone.platform.authority.po.Navigation;

/**
 * 导航
 * 
 * @author yaoht
 * 
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class NavigationDto extends Navigation implements PaginationEntityDto, TreeEntityDto {
	/**
	 * 版本号
	 */
	@Transient
	private static final long serialVersionUID = 867391171517537479L;

	/**
	 * 导航
	 * 
	 * @return 导航
	 */
	public static NavigationDto newNavigation() {
		return new NavigationDto();
	}

	/**
	 * 开始时间
	 */
	@Transient
	private String beginDateStr;

	/**
	 * 子集
	 */
	@Transient
	private List<NavigationDto> childs;

	/**
	 * 子集总数
	 */
	@Transient
	private int childTotal;

	/**
	 * 创建人编码
	 */
	@Transient
	@CreatedDate
	private String createdByCode;

	/**
	 * 创建人标识
	 */
	@Transient
	@CreatedBy
	private String createdById;

	/**
	 * 创建人名称
	 */
	@Transient
	private String createdByName;

	/**
	 * 创建时间
	 */
	@Transient
	private Date createdDate;

	/**
	 * 创建时间
	 */
	@Transient
	private String createdDateStr;

	/**
	 * 结束时间
	 */
	@Transient
	private String endDateStr;

	/**
	 * 标识集合
	 */
	@Transient
	private List<String> idList;

	/**
	 * 标识集合
	 */
	@Transient
	private String ids;

	/**
	 * 修改人编码
	 */
	@Transient
	private String lastModifiedByCode;

	/**
	 * 修改人标识
	 */
	@Transient
	@LastModifiedBy
	private String lastModifiedById;

	/**
	 * 修改人名称
	 */
	@Transient
	private String lastModifiedByName;

	/**
	 * 修改时间
	 */
	@Transient
	@LastModifiedDate
	private Date lastModifiedDate;

	/**
	 * 修改时间
	 */
	@Transient
	private String lastModifiedDateStr;

	/**
	 * 分页号
	 */
	@Transient
	private int paginationNo;

	/**
	 * 分页大小
	 */
	@Transient
	private int paginationSize;

	/**
	 * 父级标识
	 */
	private String parentId;

	/**
	 * 站点编号
	 */
	@Transient
	private String siteCode;

	/**
	 * 站点名称
	 */
	@Transient
	private String siteName;

	/**
	 * 树编号
	 */
	@Transient
	private String treeCode;

	/**
	 * 树类别编号
	 */
	@Transient
	private String treeTypeCode;

	/**
	 * 类别编号
	 */
	@Transient
	private String typeCode;

	/**
	 * 类别名称
	 */
	@Transient
	private String typeName;

	/**
	 * 类别字典类别编号
	 */
	@Transient
	private String typeTypeCode;
}